利用struts完成增删改查:
思路: 1、导入相关的pom依赖(struts、自定义标签库的依赖) 2、分页的tag类导入、z.tld、完成web.xml的配置 3、dao层去访问数据 4、web层去调用dao层给前台返回数据 5、在struts_sy.xml进行配置 6、写jsp界面
1、导入相关的pom依赖(struts、自定义标签库的依赖)
13 4.0.0 4com.psy 5caoluo 6war 70.0.1-SNAPSHOT 8caoluo Maven Webapp 9http://maven.apache.org 1011 12 6013 18 19 20junit 14junit 154.12 16test 1721 26 27javax.servlet 22javax.servlet-api 234.0.1 24provided 2528 32 33 34 35org.apache.struts 29struts2-core 302.5.13 3136 40jstl 37jstl 381.2 3941 45 46taglibs 42standard 431.1.2 4447 51 52 53mysql 48mysql-connector-java 495.1.44 5054 58 59org.apache.tomcat 55tomcat-jsp-api 568.0.47 5761 76T224_caoluo 6263 74 7564 73org.apache.maven.plugins 65maven-compiler-plugin 663.7.0 6768 72
2、分页的tag类导入、z.tld、完成web.xml的配置
1 /** 2 * 分页工具类 3 * 4 */ 5 public class PageBean { 6 7 private int page = 1;// 页码 8 9 private int rows = 4;// 页大小 10 11 private int total = 0;// 总记录数 12 13 private boolean pagination = true;// 是否分页 14 // 获取前台向后台提交的所有参数 15 private MapparameterMap; 16 // 获取上一次访问后台的url 17 private String url; 18 19 /** 20 * 初始化pagebean 21 * 22 * @param req 23 */ 24 public void setRequest(HttpServletRequest req) { 25 this.setPage(req.getParameter("page")); 26 this.setRows(req.getParameter("rows")); 27 // 只有jsp页面上填写pagination=false才是不分页 28 this.setPagination(!"fasle".equals(req.getParameter("pagination"))); 29 this.setParameterMap(req.getParameterMap()); 30 this.setUrl(req.getRequestURL().toString()); 31 } 32 33 public int getMaxPage() { 34 return this.total % this.rows == 0 ? this.total / this.rows : this.total / this.rows + 1; 35 } 36 37 public int nextPage() { 38 return this.page < this.getMaxPage() ? this.page + 1 : this.getMaxPage(); 39 } 40 41 public int previousPage() { 42 return this.page > 1 ? this.page - 1 : 1; 43 } 44 45 public PageBean() { 46 super(); 47 } 48 49 public int getPage() { 50 return page; 51 } 52 53 public void setPage(int page) { 54 this.page = page; 55 } 56 57 public void setPage(String page) { 58 this.page = StringUtils.isBlank(page) ? this.page : Integer.valueOf(page); 59 } 60 61 public int getRows() { 62 return rows; 63 } 64 65 public void setRows(int rows) { 66 this.rows = rows; 67 } 68 69 public void setRows(String rows) { 70 this.rows = StringUtils.isBlank(rows) ? this.rows : Integer.valueOf(rows); 71 } 72 73 public int getTotal() { 74 return total; 75 } 76 77 public void setTotal(int total) { 78 this.total = total; 79 } 80 81 public void setTotal(String total) { 82 this.total = Integer.parseInt(total); 83 } 84 85 public boolean isPagination() { 86 return pagination; 87 } 88 89 public void setPagination(boolean pagination) { 90 this.pagination = pagination; 91 } 92 93 public Map getParameterMap() { 94 return parameterMap; 95 } 96 97 public void setParameterMap(Map parameterMap) { 98 this.parameterMap = parameterMap; 99 }100 101 public String getUrl() {102 return url;103 }104 105 public void setUrl(String url) {106 this.url = url;107 }108 109 /**110 * 获得起始记录的下标111 * 112 * @return113 */114 public int getStartIndex() {115 return (this.page - 1) * this.rows;116 }117 118 @Override119 public String toString() {120 return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination121 + ", parameterMap=" + parameterMap + ", url=" + url + "]";122 }123 124 }
z.tld
1.1 core library core 1.1 z /zking page com.tag.PageTag JSP pageBean true true
web.xml配置
12 5encodingFiter 3com.util.EncodingFiter 46 9 10encodingFiter 7/* 811 14struts 12org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 1315 struts 16*.action 17
dao层去访问数据
1 public class ClazzDao extends BaseDao{ 2 /** 3 * 查询分页 查询单个数据公用的方法 4 * @param clz 5 * @param pageBean 6 * @return 7 */ 8 public List list(Clazz clz,PageBean pageBean){ 9 String sql="select * from t_struts_class where true";10 String cname=clz.getCname();11 int cid=clz.getCid();12 if(cid!=0) {13 sql +=" and cid = "+cid;14 }15 if(StringUtils.isNotBlank(cname)) {16 sql +=" and cname like '%"+cname+"%'";17 }18 return super.executeQuery(sql, Clazz.class, pageBean);19 20 }21 /**22 * 新增方法23 * @param clz24 * @return25 */26 public int add(Clazz clz) {27 String sql="insert into t_struts_class values(?,?,?,?)";28 return super.executeUpdate(sql, new String[] {"cid","cname","cteacher","pic"}, clz);29 }30 /**31 * 修改方法32 * @param clz33 * @return34 */35 public int edit(Clazz clz) {36 String sql="update t_struts_class set cname=?,cteacher=?,pic=? where cid=?";37 return super.executeUpdate(sql, new String[] {"cname","cteacher","pic","cid"}, clz);38 }39 /**40 * 删除方法41 * @param clz42 * @return43 */44 public int del(Clazz clz) {45 String sql="delete from t_struts_class where cid=?";46 return super.executeUpdate(sql, new String[] {"cid"}, clz);47 }48 49 }
web层调用dao返回数据给jsp
1 public class ClazzAction extends BaseAction implements ModelDriven{ 2 3 4 private ClazzDao clzDao=new ClazzDao(); 5 private Clazz clz=new Clazz(); 6 7 public String list() { 8 PageBean pageBean=new PageBean(); 9 pageBean.setRequest(request);10 List list=this.clzDao.list(clz, pageBean);11 request.setAttribute("clzList", list);12 request.setAttribute("pageBean", pageBean);13 return "list";14 }15 /**16 * 跳转新增修改页面的工用方法17 * @return18 */19 public String preSave() {20 if(clz.getCid()!=0) {21 Clazz c=this.clzDao.list(clz, null).get(0);22 request.setAttribute("clz", c);23 }24 return "preSave";25 26 }27 /**28 * 新增29 * @return30 */31 public String add() {32 result= this.clzDao.add(clz);33 return "toList";34 35 }36 /**37 * 修改38 * @return39 */40 public String edit() {41 this.clzDao.edit(clz);42 return "toList";43 44 }45 /**46 * 删除47 * @return48 */49 public String del() {50 this.clzDao.del(clz);51 return "toList";52 53 }54 @Override55 public Clazz getModel() {56 // TODO Auto-generated method stub57 return clz;58 }59 60 61 }
在struts_sy.xml进行配置
12 3 94 8/clzList.jsp 5/clzEdit.jsp 6/clz_list 7
写jsp界面
首页:
1 2 38 新增 9
编号 | 13班级名 | 14教员 | 15图片 | 16操作 | 17
${c.cid } | 22${c.cname } | 23${c.cteacher } | 24${c.pic } | 2526 修改 27 删除 28 上传图片 29 | 30
新增页面与修改公用页面
1 2 310
运行效果图
首页:
新增:
修改:
完成;